package com.halden.mycache.support.saveStrategy.RDBSaveStrategy;
import com.halden.mycache.core.IMyCache;
import com.halden.mycache.core.Impl.CacheValue;

import java.io.File;
import java.util.Map;


/**
 * @Author: halden
 * @Data:2023/2/5 9:33
 * @Description: 持久化策略接口
 * @since 0.0.3
 */
public interface IRDBSaveStrategy<K,V> {

    /**
     * 设置参数，并且开始持久化
     * @param myCache
     * @param fileName
     * @since 0.0.3
     */
    void startStrategy(IMyCache<K,V> myCache, String fileName);

    /**
     * 关闭持久化线程
     * @param myCache
     * @param fileName
     * @since 0.0.3
     */
    void close(IMyCache<K,V> myCache, String fileName);

    /**
     * 读取持久化文件
     * @param file
     * @since 0.0.3
     */
    Map<K,CacheValue<V>> readSave(File file, Map<K, CacheValue<V>> map);

    /**
     * 设置持久化编码方式
     * @param saveMode
     */
    void setSaveMode(IRDBSaveMode<K,V> saveMode);
}
